{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%config InlineBackend.figure_format = 'retina' # 设置图片清晰度\n",
    "plt.rcParams['font.sans-serif'] = ['Simsun']   # 指定默认字体 Simsun为宋体\n",
    "plt.rcParams['axes.unicode_minus'] = False     # 解决保存图像时负号‘-’显示为方块的问题\n",
    "\n",
    "import time, re"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pht表：主播id表\n",
    "pht = pd.read_csv('data\\用户id.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "LDA主题模型  \n",
    "步骤：\n",
    "\n",
    "①去除停用词（使用哈工大停用词表）；\n",
    "\n",
    "②采用jieba分词，其中jieba分词库中加入LOL常用词汇，如英雄昵称、英雄位置；\n",
    "\n",
    "③使用gensim库corpora模块下的Dictionary类，创建字典；\n",
    "\n",
    "②基于构建的字典，将每个直播标题转为词袋模型；\n",
    "\n",
    "③构建并训练LDA模型，根据困惑度和一致性指标选出合适的主题个数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 直播间标题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "ht = pd.read_csv(r'data\\4月4日数据.csv')\n",
    "ht.fillna(method='bfill', inplace=True)        # 填充抓取时间的缺失值\n",
    "ht['get_time'] = ht.get_time.map(time.localtime).map(lambda x: time.strftime(\"%Y--%m--%d %H:%M:%S\", x)).astype('datetime64')  # 时间戳转日期格式\n",
    "ht = ht.rename(columns={'uid':'用户id'})        # 重命名列名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = ht.drop_duplicates('用户id')[['用户id','roomName']].rename(columns={'roomName':'直播标题'})\n",
    "pht = pd.merge(pht, a, on='用户id', how='left')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对直播标题做LDA聚类，得到聚类后的主题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('data\\热门英雄字典.txt', 'r') as f:\n",
    "    英雄字典 = f.read()\n",
    "英雄 = eval(英雄字典).keys()     # 英雄名称列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "import jieba, re\n",
    "from gensim import corpora, models  # models.LdaModel LDA模型\n",
    "from collections import defaultdict\n",
    "\n",
    "# 添加jieba分词，不希望被分开的词\n",
    "jieba_add_word = ['粉丝群', 'B站', 'BC勿扰', '周一', '周二', '周三', '周四', '周五', '周六', '周日','一点','0点', '1点', '2点', '3点', '4点', '5点', '6点', '7点', '8点', '9点', '10点', '11点', '12点', '13点', '14点', '15点', '16点', '17点', '18点', '19点', '20点', '21点', '22点', '23点', '24点',\n",
    "             '大号','乱杀','秒人流','五杀','上单','辅助','打野','ADC','中单','下路','国服第一','第一','AD','人美','声甜','一起玩','可爱','万场','千场','灵活排位','双排','单双排','峡谷之巅','豹女','颜值','新人','新主播','黑色玫瑰','艾欧尼亚','一区','网一','有车位','欢迎来到','的直播间','内战','上分','帮打',\n",
    "             '一颗小虎牙','哥哥','上号','猫咪','一打五']  \n",
    "for i in jieba_add_word:\n",
    "    jieba.add_word(i)\n",
    "\n",
    "# 添加英雄词\n",
    "for i in 英雄:\n",
    "    jieba.add_word(i)\n",
    "\n",
    "# 要删除的jieba分词，比如\"玩吧\"会使\"一起玩吧\"变成\"一起\"和\"玩吧\"，而\"一起玩\"更具有代表性和普遍性。\n",
    "jieba_del_word = ['之上','玩吧']\n",
    "for j in jieba_del_word:\n",
    "    jieba.del_word(j)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### **第一步，生成嵌套列表。**  \n",
    "嵌套列表，即一个文档/直播间标题是一个列表（分词、去停用词后），如果有多个文档/直播间标题，则需要将多个列表组合起来形成一个嵌套列表。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# 建立去除停用词的正则表达式\n",
    "# 自己加入的停用词\n",
    "r = '[a-zA-Z0-9!\"#$%&\\'·丨『』☆()（）*+,-./:：;<=>?@，。?★、…【】《》？“”‘！[\\\\]^_`{|}~\\s]+|、|丶|我|是|你|的|就|一个|呀|鸭|丫|吖|想|了|吧|吗|嘛|不|群|便|啊|哈|哦|啦|灬|局|' \n",
    "\n",
    "# 哈工大停用词\n",
    "with open('data\\哈工大停用词表.txt', 'r', encoding='utf-8') as f:\n",
    "    Stop = f.read()\n",
    "r_stop = re.sub('\\n', '|', Stop)[955:]\n",
    "\n",
    "# 用两种停用词来建立正则表达式\n",
    "r = r + r_stop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[['打', '大号', '维护'],\n",
       " ['韩服', '乱杀', '职业', '选手'],\n",
       " ['三项', '爷青回', '赵信', '发财', '老枪', '笑'],\n",
       " ['中路', '杀神', '血洗', '峡谷', '秒人流', '卡牌', '蒸发'],\n",
       " ['第一', '男枪', '张嘉', '文教', '闭眼', '一打五']]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 嵌套列表\n",
    "直播标题词袋 = pht.直播标题.apply(lambda x: re.sub(r,'', x)).map(jieba.cut).map(list).to_list()\n",
    "pht['直播标题词袋'] = 直播标题词袋\n",
    "\n",
    "直播标题词袋[:5]          # 查看嵌套列表"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### **第二步：构建字典——dictionary**  \n",
    "构建字典的目的主要是生成一个词袋，里面的词来自于文档，并且没有重复的词。\n",
    "[gensim corpora的简单使用](https://blog.csdn.net/Yolen_Chan/article/details/84934928)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dictionary(8570 unique tokens: ['大号', '打', '维护', '乱杀', '职业']...)\n"
     ]
    }
   ],
   "source": [
    "dictionary = corpora.Dictionary(直播标题词袋)     # 生成词频字典 {词：频率}\n",
    "\n",
    "dictionary.dfs         # 返回字典：{单词id：在多少文档中出现}\n",
    "# 输出：{1: 64, 3: 5, 0: 216, 2: 162, 5: 62, 6: 18, 4: 44, 8: 31, 7: 26,...}\n",
    "dictionary.token2id;   # 返回字典：{单词：id}  id也即独一无二的编号\n",
    "# 输出：{'号': 0, '大': 1, '局': 2, '维护': 3, '乱': 4, '杀': 5, '职业': 6,...}\n",
    "print(dictionary)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "可见，由嵌套列表生成的字典共有8570个唯一的词。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# 手动去除一些没有实际意义词(单个字的词)，弥补停用词不全面的缺点\n",
    "bad_ids = []\n",
    "for key,value in dictionary.token2id.items():\n",
    "    if len(key)==1:    # 如果词为单个字，那么将其id存放到bad_ids列表中\n",
    "        bad_ids.append(value)\n",
    "\n",
    "dictionary.filter_tokens(bad_ids=bad_ids)   # 去除bad_ids列表中的词id\n",
    "dictionary.compactify()    # 去除了单个字的词之后，重新对单词id进行排序。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### **第三步：构建语料库——corpus（词袋模型 BOW--bag of words）**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "> 什么是语料库：  \n",
    "词袋形象地解释便是：将文本中的词放入一个袋子里，在袋子中，词拥有两个属性编号和数目（id，num）。一个词袋对应一篇文档。由元组（单词id,出现次数num)构成的 [(0, 1), (1, 2), (2, 1)] 则称作稀疏向量。一般语料库都是用这种方式来表示。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[(0, 1), (1, 1)],\n",
       " [(2, 1), (3, 1), (4, 1), (5, 1)],\n",
       " [(6, 1), (7, 1), (8, 1), (9, 1), (10, 1)]]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corpus = [dictionary.doc2bow(text) for text in 直播间标题词袋]  # 生成语料库\n",
    "\n",
    "corpus[:3]              # 查看语料库"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "以第一个子列表为例，(0,1)表示的是，id为0的单词在第一篇文档/直播间标题出现次数是1；(1,1)表示的是id为1的单词在第一篇文档/直播间标题出现次数是1以此类推。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### **第四步：训练LDA模型**  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# LDA模型的训练\n",
    "# corpus：语料库\n",
    "# iterations：最大迭代次数\n",
    "num_topics = 3        # 设置主题个数\n",
    "lda = models.LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics,\n",
    "        iterations=500, random_state=123)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### **第五步：选择合适的主题个数** \n",
    "[lda主题模型困惑度_主题模型（三）：LDA主题个数选择](https://blog.csdn.net/weixin_39676021/article/details/112187210)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算每个模型的困惑度，根据困惑度的实验结果，在合理的范围内进行一致性实验。最后得出效果最好主题个数。  \n",
    "> 主题数越多，困惑度越低，但会出现过拟合的情况，故需要一致性指标辅助判断"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 保存2-15个主题数的lda模型，迭代次数为500\n",
    "for num_topic in range(2, 16):\n",
    "    lda = models.LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topic,\n",
    "        iterations=500)\n",
    "    lda.save('lda_model_直播标题\\lda_topic%s.model'%num_topic)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "###### 5.1 困惑度确定主题数范围"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "def perplexity_visible_model(model_path, topic_range=range(2,16)):\n",
    "    '''\n",
    "    获取不同主题下的困惑度，并绘制折线图\n",
    "    parameters:\n",
    "        topic_range: list, eg: range(2,16) 训练2-15各主题的lda\n",
    "        model_path: 模型储存在哪个路径文件夹下\n",
    "    return：\n",
    "        perplexity: list, 每个主题对应的困惑度\n",
    "    '''\n",
    "    perplexity_list = []      # 用于存放困惑度\n",
    "    for num_topic in topic_range:\n",
    "        # 训练lda模型\n",
    "        lda = models.LdaModel.load(f'{model_path}\\lda_topic{num_topic}.model')\n",
    "        # 计算困惑度\n",
    "        perplexity = lda.log_perplexity(corpus)\n",
    "        perplexity_list.append(perplexity)\n",
    "\n",
    "    plt.plot(topic_range, perplexity_list)\n",
    "    plt.xlabel('num topics')\n",
    "    plt.ylabel('perplexity score')\n",
    "    plt.legend(('perplexity_values'), loc='best')\n",
    "    \n",
    "    return perplexity_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxMAAAIHCAYAAADkagFpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdd3zV1f3H8dfnZicEQgZ7b0QFCVNAcNVqtdbWunGPurXuLjtsbX84qnVU1KoojrbuWVsFGTIkDFHZe5NBBgnZ5/fHvVwCBoHkG75J7vv5eOSR3PP93nM+wYchb873nGPOOURERERERA5VwO8CRERERESkaVKYEBERERGROlGYEBERERGROlGYEBERERGROlGYEBERERGROlGYEBERERGROlGYEBERERGROlGYEBERERGROlGYEBERERGROlGYEBERERGROlGYEBERERGROlGYEBERERGROon2uwDZPzNbA7QE1vpcioiIiIg0X92AQudc90N9o8JE49YyISEhtX///ql+FyIiIiIizdOSJUvYtWtXnd6rMNG4re3fv39qVlaW33WIiIiISDOVmZnJ/Pnz19blvVozISIiIiIidaIwISIiIiIidaIwISIiIiIidaIwISIiIiIidaIwISIiIiIidaIwISIiIiIidaIwISIiIiIidaJzJkRERESk0amuriYvL4+ioiLKyspwzvldUpNgZsTFxZGcnExqaiqBQMPOHShMiIiIiEijUl1dzYYNGygpKfG7lCbHOUdpaSmlpaUUFxfTuXPnBg0UChMiIiIi0qjk5eVRUlJCdHQ07dq1IykpqcH/hb25qK6upri4mK1bt1JSUkJeXh7p6ekNNp7+q4iIiIhIo1JUVARAu3btSE5OVpA4BIFAgOTkZNq1awfs+bNssPEatHcRERERkUNUVlYGQFJSks+VNF27/+x2/1k2lIgLE2Z2ppm5/XxMqWOfcWb2kJm9Y2avmtnjZpbgde0iIiIikWD3YmvNSNSdmQE0+ML1SPwvdCTwOpAJ9K7xMRG4t459Pgd0dM790Dl3HrADeMWDWkVEREREDtnuMNHQInEBdntgvHNu1+4GM2sP4Jybdqidmdlo4DygZ43mCcB2MzvZOfffetYrIiIiItIoReLMxP01g0TIb4D769jfJcAi59ya3Q3OuQLgC+Ci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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 259,
       "width": 393
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "perlexity_list = perplexity_visible_model(topic_range=range(2, 16), model_path='lda_model_直播标题')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "由上图发现，当主题个数超过5\n",
    "时，模型的困惑度就会急剧下降。故初步将主题数定在1-5之间。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "###### 5.2 绘制主题数和一致性的变化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "def coherence_visible_model(model_path, topic_range=range(2,16)):\n",
    "    '''\n",
    "    计算不同主题个数下的一致性，并绘制折线图\n",
    "    parameters：\n",
    "        topic_range：list, eg: range(2,15) 主题数范围为2-15\n",
    "        model_path：存放lda模型的文件夹的路径\n",
    "    return:\n",
    "        coherence_list：每个主题对应的一致性\n",
    "    '''\n",
    "    coherence_list = []      # 存放困惑度\n",
    "    \n",
    "    for num_topic in topic_range:\n",
    "        lda = models.LdaModel.load(f'{model_path}\\lda_topic{num_topic}.model')\n",
    "        # 计算一致性\n",
    "        cm = models.CoherenceModel(model=lda, corpus=corpus, dictionary=dictionary, coherence='u_mass')\n",
    "        coherence = cm.get_coherence()\n",
    "        coherence_list.append(coherence)\n",
    "        \n",
    "    plt.plot(topic_range, coherence_list)\n",
    "    plt.xlabel('num topics')\n",
    "    plt.ylabel('coherence score')\n",
    "    plt.legend(('coherence_values'), loc='best')\n",
    "    \n",
    "    return coherence_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 259,
       "width": 383
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "coherence_list = coherence_visible_model(topic_range=range(2, 16), model_path='lda_model_直播标题')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "可见当主题数为2时，模型评分最高。  \n",
    "当主题数为4、5时，主题4和主题5的样本数过少，所以不宜分为4、5类。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "###### 5.3 可视化模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import pyLDAvis.gensim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "num_topic = 2\n",
    "lda = models.ldamodel.LdaModel.load('lda_model_直播标题\\lda_topic%s.model'%num_topic)\n",
    "vis_data = pyLDAvis.gensim.prepare(lda, corpus, dictionary)\n",
    "pyLDAvis.show(vis_data, open_browser=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### **第六步：查看各主题的主题词**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "      <th>14</th>\n",
       "      <th>15</th>\n",
       "      <th>16</th>\n",
       "      <th>17</th>\n",
       "      <th>18</th>\n",
       "      <th>19</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>直播间</td>\n",
       "      <td>欢迎来到</td>\n",
       "      <td>一颗小虎牙</td>\n",
       "      <td>上分</td>\n",
       "      <td>虎牙</td>\n",
       "      <td>克隆</td>\n",
       "      <td>快乐</td>\n",
       "      <td>英雄</td>\n",
       "      <td>今天</td>\n",
       "      <td>白银</td>\n",
       "      <td>联盟</td>\n",
       "      <td>日常</td>\n",
       "      <td>云顶</td>\n",
       "      <td>德玛</td>\n",
       "      <td>教学</td>\n",
       "      <td>西亚</td>\n",
       "      <td>一只</td>\n",
       "      <td>开心</td>\n",
       "      <td>艾克</td>\n",
       "      <td>双人</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>一起玩</td>\n",
       "      <td>黑色玫瑰</td>\n",
       "      <td>上车</td>\n",
       "      <td>王者</td>\n",
       "      <td>订阅</td>\n",
       "      <td>黑色</td>\n",
       "      <td>艾欧尼亚</td>\n",
       "      <td>峡谷</td>\n",
       "      <td>车位</td>\n",
       "      <td>教学</td>\n",
       "      <td>大乱斗</td>\n",
       "      <td>娱乐</td>\n",
       "      <td>直播</td>\n",
       "      <td>一区</td>\n",
       "      <td>灵活</td>\n",
       "      <td>钻石</td>\n",
       "      <td>黄金</td>\n",
       "      <td>主播</td>\n",
       "      <td>排位</td>\n",
       "      <td>上单</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     0     1      2   3   4   5     6   7   8   9   10  11  12  13  14  15  \\\n",
       "0  直播间  欢迎来到  一颗小虎牙  上分  虎牙  克隆    快乐  英雄  今天  白银   联盟  日常  云顶  德玛  教学  西亚   \n",
       "1  一起玩  黑色玫瑰     上车  王者  订阅  黑色  艾欧尼亚  峡谷  车位  教学  大乱斗  娱乐  直播  一区  灵活  钻石   \n",
       "\n",
       "   16  17  18  19  \n",
       "0  一只  开心  艾克  双人  \n",
       "1  黄金  主播  排位  上单  "
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_topic = 2\n",
    "lda = models.LdaModel.load('lda_model_直播标题\\lda_topic%s.model'%num_topic)  # 读取提前存储的模型\n",
    "\n",
    "# lda.print_topics(num_words)：获取每个主题前`num_words`个重要的单词\n",
    "topic_list = lda.print_topics(num_words=20)\n",
    "'''\n",
    "topic_list：\n",
    "[(0, '0.030*\"玩\" + 0.029*\"黑色\" + 0.024*\"虎牙\" + 0.020*\"玫瑰\" + 0.015*\"颗\" + 0.009*\"尼亚\" + 0.009*\"艾欧\" + 0.009*\"上车\" + 0.009*\"灵活\" + 0.009*\"订阅\"'),\n",
    " (1, '0.016*\"峡谷\" + 0.008*\"区\" + 0.008*\"人\" + 0.008*\"钻石\" + 0.006*\"专场\" + 0.006*\"福星\" + 0.006*\"娱乐\" + 0.005*\"网\" + 0.005*\"局\" + 0.005*\"上\"'),\n",
    " (2, '0.009*\"号\" + 0.009*\"快乐\" + 0.008*\"免费\" + 0.008*\"好\" + 0.008*\"玩玩\" + 0.008*\"上分\" + 0.007*\"分\" + 0.007*\"教学\" + 0.007*\"上\" + 0.007*\"吃\"')]\n",
    "''';\n",
    "# 整理成dataframe结构，方便查看\n",
    "pd.DataFrame([re.findall('\"(.*?)\"', t[1]) for t in topic_list])\n",
    "# 技术型\n",
    "# 娱乐型、新人型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### **第七步：打印出dataframe中各个直播间标题所属主题的概率。**  \n",
    "（需要先将文档转为词袋形式[(id,num)...]，再用lda模型预测）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     [(0, 0.19191918), (1, 0.80808085)]\n",
       "1    [(0, 0.100790784), (1, 0.89920926)]\n",
       "2      [(0, 0.14028782), (1, 0.8597121)]\n",
       "Name: 直播标题词袋, dtype: object"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 提取出每个直播间标题在每个主题上的概率\n",
    "lda_result = pht.直播标题词袋.apply(lambda x: lda.get_document_topics(dictionary.doc2bow(x)))\n",
    "lda_result[:3]     # 主题0——概率0.8， 主题1——概率0.08，主题2——概率0.08"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>用户id</th>\n",
       "      <th>直播标题</th>\n",
       "      <th>直播标题词袋</th>\n",
       "      <th>直播Topic1</th>\n",
       "      <th>直播Topic2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1820796294</td>\n",
       "      <td>打把大号维护局！</td>\n",
       "      <td>[打, 大号, 维护]</td>\n",
       "      <td>0.191919</td>\n",
       "      <td>0.808081</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2183525275</td>\n",
       "      <td>韩服乱杀职业选手</td>\n",
       "      <td>[韩服, 乱杀, 职业, 选手]</td>\n",
       "      <td>0.100791</td>\n",
       "      <td>0.899209</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         用户id      直播标题            直播标题词袋  直播Topic1  直播Topic2\n",
       "0  1820796294  打把大号维护局！       [打, 大号, 维护]  0.191919  0.808081\n",
       "1  2183525275  韩服乱杀职业选手  [韩服, 乱杀, 职业, 选手]  0.100791  0.899209"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将Series转化为[{}, {}, ...{}]格式，以便转为dataframe格式——Topics，然后与pht表合并\n",
    "lda_result_data = lda_result.map(dict).to_list()\n",
    "\n",
    "Topics = pd.DataFrame(lda_result_data)\n",
    "Topics.columns = ['直播Topic%s'%i for i in range(1, num_topic+1)]\n",
    "pht = pd.concat((pht, Topics), axis=1, join='inner')\n",
    "pht.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\software\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:2: FutureWarning: \n",
      "The current behaviour of 'Series.argmax' is deprecated, use 'idxmax'\n",
      "instead.\n",
      "The behavior of 'argmax' will be corrected to return the positional\n",
      "maximum in the future. For now, use 'series.values.argmax' or\n",
      "'np.argmax(np.array(values))' to get the position of the maximum\n",
      "row.\n",
      "  \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "2    5765\n",
       "1    5196\n",
       "Name: 直播标题主题, dtype: int64"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pht['Topic']   直播间标题的主题\n",
    "pht['直播标题主题'] = pht[['直播Topic%s'%i for i in range(1, num_topic+1)]].apply(lambda x: x.argmax()[-1], axis=1)\n",
    "pht['直播标题主题概率'] = pht[['直播Topic%s'%i for i in range(1, num_topic+1)]].max(axis=1)\n",
    "pht.直播标题主题.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "——————Topic1——————\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "10754    欢迎来到【丐帮】狗彻家的瓜娃籽籽籽籽籽籽籽籽籽籽的直播间\n",
       "10725                欢迎来到晚风吹起鬓间白发的直播间\n",
       "6260              欢迎来到时代-天际-雾散真可爱的直播间\n",
       "9924             逃离塔科夫离线版，送修改数据，可帮安装！\n",
       "4703                欢迎来到一位失去斗志的网友的直播间\n",
       "10177              欢迎来到放肆的青春诠释了悲伤的直播间\n",
       "3082                 欢迎来到森少讲解小米晓峰的直播间\n",
       "10638                  阳光大男孩，快乐小丑准备作战\n",
       "10347               欢迎来到齐鲁工业大学小王子的直播间\n",
       "10445                 欢迎来到一只野生小男枪的直播间\n",
       "10629              欢迎来到豆沙宝贝汐【酒倒满】的直播间\n",
       "6800                  欢迎来到寻梦-疯狂小龙的直播间\n",
       "7739             不加工会不加工会不加工会不加工会不加工会\n",
       "10635                 欢迎来到仙仙仙仙气飘飘的直播间\n",
       "10946                欢迎来到文家铁骑-潘小帅的直播间\n",
       "10911                欢迎来到热恋中从未听讲过的直播间\n",
       "10837                  欢迎来到什锦香肠炒饭的直播间\n",
       "7492                欢迎来到英雄联盟--天然呆的直播间\n",
       "9388                  欢迎来到揽秀-一只小熊的直播间\n",
       "9232                   欢迎来到岳家虎牙少年的直播间\n",
       "Name: 直播标题, dtype: object"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "——————Topic2——————\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "5888    黑玫瑰温柔粘人小姐姐通宵车排位匹配一起玩\n",
       "1059    萌新解惑，欢迎提问。谢谢 订阅 谢谢陪伴\n",
       "5655    雷瑟守备白金钻石局 你得螳螂人马打野导师\n",
       "5046      水晶之痕 最菜铂金下棋乱斗主播求赐教\n",
       "3817    雷瑟守备大师局奥拉夫三级必单吃不单请举报\n",
       "756     黑色玫瑰白银黄金灵活 关注免费上车来固玩\n",
       "2443    重庆小姐姐 黑色灵活组排有位置 一起玩~\n",
       "5379     黑色灵活排新主播浙江小姐姐有车位一起玩\n",
       "2327    <湖南>黑色玫瑰灵活组排通宵有位置一起玩\n",
       "5738      成都小姐姐电六战争学院车位多多一起玩\n",
       "3857      黑色灵活有位置一起玩，女野王带飞全场\n",
       "1419      帮安排，艾欧尼亚王者国服最强寡妇男刀\n",
       "594      电一艾欧尼亚匹配乱斗灵活代币之路一起玩\n",
       "8127     第一天直播的河北小姐姐，网三上车一起玩\n",
       "5597    黑色玫瑰|新主播声优小姐姐订阅2血瓶上车\n",
       "1533    巨神峰黄金到白金的单子 专业辅助可以上车\n",
       "6354     超甜小姐姐黑色玫瑰 黄金铂金上车一起玩\n",
       "9240    网一钻石局河南妹妹可可爱爱没有脑袋一起玩\n",
       "5378      黑色长沙小姐姐千场安妮在线挨揍一起玩\n",
       "1255     四川少女音新主播，电一黑色有车位一起玩\n",
       "Name: 直播标题, dtype: object"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "a = pht.sort_values('直播标题主题概率', ascending=False)\n",
    "for i in range(1, num_topic+1):\n",
    "    print('——————Topic%s——————'%i)\n",
    "    display(a[a.直播标题主题==str(i)].直播标题.head(20))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### **第八步：储存为字典.txt**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# 储存{用户id：直播标题}字典\n",
    "with open('data\\用户id_直播标题字典.txt', 'w') as f:    \n",
    "    title_id = str(pht.set_index('用户id')['直播标题主题'].to_dict())\n",
    "    f.write(title_id)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 公告主题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 从个人信息.csv导入公告到pht表\n",
    "个人信息表 = pd.read_csv('data\\个人信息.csv')\n",
    "ann_dict = 个人信息表.set_index('用户id')['公告'].to_dict()\n",
    "\n",
    "pht['公告'] = pht.用户id.map(ann_dict)\n",
    "pht.公告.fillna('', inplace=True)     # 填充公告缺失值为空''"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### 第一步，生成嵌套列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[['直播', '时间', '晚上', '点播', '到', '凌晨', '点'], ['粉丝', '直播', '时间', '晚上', '点点'], ['湖北', '大叔', '主玩', '赵信', '颜值', '高', '身材', '好', '技术', '够', '一杆', '长枪', '战', '峡谷', '一腔热血', '闯', '虎牙', '薇'], ['新浪', '微博', '虎牙', '芜湖', '神', '晚点', '半永鸽', '血洗', '峡谷', '芜湖', '没周', '祝', '大家', '天天开心'], ['直播', '时间', '晚上', '点点']]\n"
     ]
    }
   ],
   "source": [
    "公告词袋 = pht.公告.apply(lambda x: re.sub(r, '', x)).map(jieba.cut).map(list).to_list()\n",
    "pht['公告词袋'] = 公告词袋\n",
    "\n",
    "print(公告词袋[:5])       # 查看嵌套列表"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### 第二步：构建字典——dictionary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dictionary(10771 unique tokens: ['凌晨', '到', '时间', '晚上', '点']...)\n"
     ]
    }
   ],
   "source": [
    "dictionary = corpora.Dictionary(公告词袋)     # 生成词频字典 {词：频率}\n",
    "\n",
    "print(dictionary)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# 手动去除一些没有实际意义词(单个字的词)，弥补停用词不全面的缺点\n",
    "bad_ids = []\n",
    "for key,value in dictionary.token2id.items():\n",
    "    if len(key)==1:    # 如果词为单个字，那么将其id存放到bad_ids列表中\n",
    "        bad_ids.append(value)\n",
    "dictionary.filter_tokens(bad_ids=bad_ids)   # 去除bad_ids列表中的词id\n",
    "dictionary.compactify()    # 去除了单个字的词之后，重新对单词id进行排序。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### 第三步：构建语料库——corpus"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[(56, 1), (107, 1)],\n",
       " [(820, 1), (881, 1), (1371, 1), (4841, 1)],\n",
       " [(15, 1), (6104, 1)]]"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corpus = [dictionary.doc2bow(text) for text in 直播间标题词袋]  # 生成语料库\n",
    "\n",
    "corpus[:3]              # 查看语料库"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "##### 第四步：训练LDA模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# LDA模型的训练\n",
    "num_topics = 3        # 设置主题个数\n",
    "lda = models.LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics,\n",
    "        iterations=500, random_state=123)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 第五步：选择合适的主题个数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 保存2-15个主题数的lda模型，迭代次数为500\n",
    "for num_topic in range(2, 16):\n",
    "    lda = models.LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topic,\n",
    "        iterations=500)\n",
    "    lda.save('lda_model_公告\\lda_topic%s.model'%num_topic)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "###### 5.1 困惑度确定主题数范围"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 259,
       "width": 388
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "perlexity_list = perplexity_visible_model(topic_range=range(2, 16), model_path='lda_model_公告')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "由上图发现，当主题个数超过8时，模型的困惑度就会急剧下降。故初步将主题数定在3-5之间。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "###### 5.2 绘制主题数和一致性的变化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 259,
       "width": 383
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "coherence_list = coherence_visible_model(model_path='lda_model_公告', topic_range=range(2, 16))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "结合困惑度指标，当主题数为3时，模型评分最高。  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###### 5.3 可视化模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\software\\Anaconda3\\lib\\site-packages\\pyLDAvis\\_prepare.py:257: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n",
      "of pandas will change to not sort by default.\n",
      "\n",
      "To accept the future behavior, pass 'sort=False'.\n",
      "\n",
      "To retain the current behavior and silence the warning, pass 'sort=True'.\n",
      "\n",
      "  return pd.concat([default_term_info] + list(topic_dfs))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Note: if you're in the IPython notebook, pyLDAvis.show() is not the best command\n",
      "      to use. Consider using pyLDAvis.display(), or pyLDAvis.enable_notebook().\n",
      "      See more information at http://pyLDAvis.github.io/quickstart.html .\n",
      "\n",
      "You must interrupt the kernel to end this command\n",
      "\n",
      "Serving to http://127.0.0.1:8889/    [Ctrl-C to exit]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "127.0.0.1 - - [07/Oct/2021 22:17:15] \"GET / HTTP/1.1\" 200 -\n",
      "127.0.0.1 - - [07/Oct/2021 22:17:15] \"GET /LDAvis.css HTTP/1.1\" 200 -\n",
      "127.0.0.1 - - [07/Oct/2021 22:17:15] \"GET /d3.js HTTP/1.1\" 200 -\n",
      "127.0.0.1 - - [07/Oct/2021 22:17:15] code 404, message Not Found\n",
      "127.0.0.1 - - [07/Oct/2021 22:17:15] \"GET /favicon.ico HTTP/1.1\" 404 -\n",
      "127.0.0.1 - - [07/Oct/2021 22:17:15] \"GET /LDAvis.js HTTP/1.1\" 200 -\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "stopping Server...\n"
     ]
    }
   ],
   "source": [
    "import pyLDAvis.gensim\n",
    "\n",
    "num_topic = 3\n",
    "lda = models.ldamodel.LdaModel.load('lda_model_公告\\lda_topic%s.model'%num_topic)\n",
    "vis_data = pyLDAvis.gensim.prepare(lda, corpus, dictionary)\n",
    "pyLDAvis.show(vis_data, open_browser=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### **第六步：查看各主题的主题词**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<>:2: DeprecationWarning: invalid escape sequence \\l\n",
      "<>:2: DeprecationWarning: invalid escape sequence \\l\n",
      "<>:2: DeprecationWarning: invalid escape sequence \\l\n",
      "<ipython-input-95-77d22053611d>:2: DeprecationWarning: invalid escape sequence \\l\n",
      "  lda = models.LdaModel.load('lda_model_公告\\lda_topic%s.model'%num_topic)  # 读取提前存储的模型\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "      <th>14</th>\n",
       "      <th>15</th>\n",
       "      <th>16</th>\n",
       "      <th>17</th>\n",
       "      <th>18</th>\n",
       "      <th>19</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>直播间</td>\n",
       "      <td>欢迎来到</td>\n",
       "      <td>黑色玫瑰</td>\n",
       "      <td>一起玩</td>\n",
       "      <td>上车</td>\n",
       "      <td>娱乐</td>\n",
       "      <td>快乐</td>\n",
       "      <td>游戏</td>\n",
       "      <td>一起</td>\n",
       "      <td>车位</td>\n",
       "      <td>主播</td>\n",
       "      <td>订阅</td>\n",
       "      <td>小姐姐</td>\n",
       "      <td>上分</td>\n",
       "      <td>新主播</td>\n",
       "      <td>欢迎</td>\n",
       "      <td>免费</td>\n",
       "      <td>妹妹</td>\n",
       "      <td>灵活</td>\n",
       "      <td>无聊</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>一起玩</td>\n",
       "      <td>王者</td>\n",
       "      <td>峡谷</td>\n",
       "      <td>教学</td>\n",
       "      <td>克隆</td>\n",
       "      <td>一区</td>\n",
       "      <td>黑色</td>\n",
       "      <td>上单</td>\n",
       "      <td>第一</td>\n",
       "      <td>大师</td>\n",
       "      <td>钻石</td>\n",
       "      <td>灵活</td>\n",
       "      <td>专场</td>\n",
       "      <td>英雄</td>\n",
       "      <td>云顶</td>\n",
       "      <td>峡谷之巅</td>\n",
       "      <td>车位</td>\n",
       "      <td>一天</td>\n",
       "      <td>联盟</td>\n",
       "      <td>打野</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>一颗小虎牙</td>\n",
       "      <td>欢迎来到</td>\n",
       "      <td>上分</td>\n",
       "      <td>大乱斗</td>\n",
       "      <td>黄金</td>\n",
       "      <td>直播间</td>\n",
       "      <td>虎牙</td>\n",
       "      <td>排位</td>\n",
       "      <td>艾欧尼亚</td>\n",
       "      <td>玩玩</td>\n",
       "      <td>订阅</td>\n",
       "      <td>直播</td>\n",
       "      <td>辅助</td>\n",
       "      <td>下饭</td>\n",
       "      <td>白银</td>\n",
       "      <td>福星</td>\n",
       "      <td>单排</td>\n",
       "      <td>今天</td>\n",
       "      <td>免费</td>\n",
       "      <td>铂金</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       0     1     2    3   4    5   6   7     8   9  10  11   12  13   14  \\\n",
       "0    直播间  欢迎来到  黑色玫瑰  一起玩  上车   娱乐  快乐  游戏    一起  车位  主播  订阅  小姐姐  上分  新主播   \n",
       "1    一起玩    王者    峡谷   教学  克隆   一区  黑色  上单    第一  大师  钻石  灵活   专场  英雄   云顶   \n",
       "2  一颗小虎牙  欢迎来到    上分  大乱斗  黄金  直播间  虎牙  排位  艾欧尼亚  玩玩  订阅  直播   辅助  下饭   白银   \n",
       "\n",
       "     15  16  17  18  19  \n",
       "0    欢迎  免费  妹妹  灵活  无聊  \n",
       "1  峡谷之巅  车位  一天  联盟  打野  \n",
       "2    福星  单排  今天  免费  铂金  "
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_topic = 3\n",
    "lda = models.LdaModel.load('lda_model_公告\\lda_topic%s.model'%num_topic)  # 读取提前存储的模型\n",
    "\n",
    "# lda.print_topics(num_words)：获取每个主题前`num_words`个重要的单词\n",
    "topic_list = lda.print_topics(num_words=20)\n",
    "\n",
    "# 整理成dataframe结构，方便查看\n",
    "pd.DataFrame([re.findall('\"(.*?)\"', t[1]) for t in topic_list])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### **第七步：打印出dataframe中各个直播间标题所属主题的概率。**  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    [(0, 0.058559127), (1, 0.06457531), (2, 0.8768...\n",
       "1    [(0, 0.05768914), (1, 0.06327685), (2, 0.879034)]\n",
       "2    [(0, 0.17850013), (1, 0.50839555), (2, 0.31310...\n",
       "Name: 公告词袋, dtype: object"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lda_result = pht.公告词袋.apply(lambda x: lda.get_document_topics(dictionary.doc2bow(x)))\n",
    "lda_result[:3]     # 主题0——概率0.8， 主题1——概率0.08，主题2——概率0.08"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>用户id</th>\n",
       "      <th>直播标题</th>\n",
       "      <th>直播标题词袋</th>\n",
       "      <th>直播Topic1</th>\n",
       "      <th>直播Topic2</th>\n",
       "      <th>直播标题主题</th>\n",
       "      <th>直播标题主题概率</th>\n",
       "      <th>公告</th>\n",
       "      <th>公告词袋</th>\n",
       "      <th>公告Topic1</th>\n",
       "      <th>公告Topic2</th>\n",
       "      <th>公告Topic3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1820796294</td>\n",
       "      <td>打把大号维护局！</td>\n",
       "      <td>[打, 大号, 维护]</td>\n",
       "      <td>0.191919</td>\n",
       "      <td>0.808081</td>\n",
       "      <td>2</td>\n",
       "      <td>0.808081</td>\n",
       "      <td>直播时间晚上9点播到凌晨4点</td>\n",
       "      <td>[直播, 时间, 晚上, 点播, 到, 凌晨, 点]</td>\n",
       "      <td>0.058559</td>\n",
       "      <td>0.064575</td>\n",
       "      <td>0.876866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2183525275</td>\n",
       "      <td>韩服乱杀职业选手</td>\n",
       "      <td>[韩服, 乱杀, 职业, 选手]</td>\n",
       "      <td>0.100791</td>\n",
       "      <td>0.899209</td>\n",
       "      <td>2</td>\n",
       "      <td>0.899209</td>\n",
       "      <td>粉丝群：864936115  直播时间 晚上8点-2点</td>\n",
       "      <td>[粉丝, 直播, 时间, 晚上, 点点]</td>\n",
       "      <td>0.057689</td>\n",
       "      <td>0.063277</td>\n",
       "      <td>0.879034</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         用户id      直播标题            直播标题词袋  直播Topic1  直播Topic2 直播标题主题  \\\n",
       "0  1820796294  打把大号维护局！       [打, 大号, 维护]  0.191919  0.808081      2   \n",
       "1  2183525275  韩服乱杀职业选手  [韩服, 乱杀, 职业, 选手]  0.100791  0.899209      2   \n",
       "\n",
       "   直播标题主题概率                           公告                        公告词袋  \\\n",
       "0  0.808081               直播时间晚上9点播到凌晨4点  [直播, 时间, 晚上, 点播, 到, 凌晨, 点]   \n",
       "1  0.899209  粉丝群：864936115  直播时间 晚上8点-2点        [粉丝, 直播, 时间, 晚上, 点点]   \n",
       "\n",
       "   公告Topic1  公告Topic2  公告Topic3  \n",
       "0  0.058559  0.064575  0.876866  \n",
       "1  0.057689  0.063277  0.879034  "
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将Series转化为[{}, {}, ...{}]格式，以便转为dataframe格式——Topics，然后与pht表合并\n",
    "lda_result_data = lda_result.map(dict).to_list()\n",
    "\n",
    "Topics = pd.DataFrame(lda_result_data)\n",
    "Topics.columns = ['公告Topic%s'%i for i in range(1, num_topic+1)]\n",
    "pht = pd.concat((pht, Topics), axis=1, join='inner')\n",
    "pht.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\software\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:2: FutureWarning: \n",
      "The current behaviour of 'Series.argmax' is deprecated, use 'idxmax'\n",
      "instead.\n",
      "The behavior of 'argmax' will be corrected to return the positional\n",
      "maximum in the future. For now, use 'series.values.argmax' or\n",
      "'np.argmax(np.array(values))' to get the position of the maximum\n",
      "row.\n",
      "  \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1    6225\n",
       "3    3037\n",
       "2    1699\n",
       "Name: 公告主题, dtype: int64"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pht['Topic']   公告间标题的主题\n",
    "pht['公告主题'] = pht[['公告Topic%s'%i for i in range(1, num_topic+1)]].apply(lambda x: x.argmax()[-1], axis=1)\n",
    "pht['公告主题概率'] = pht[['公告Topic%s'%i for i in range(1, num_topic+1)]].max(axis=1)\n",
    "pht.公告主题.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "——————Topic1——————\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "8343                      欢迎来到辣妈兔妞娱乐间。游戏而已，开心就好。娱乐开播，开心就好~\n",
       "6661                          每天晚上八点半开始玩，有兴趣的一起来组队，一起开心的玩耍\n",
       "1591            欢迎来到叶郡直播间，主播QQ：1478197837，感兴趣的可以加一下，线下一起玩。\n",
       "3429                             欢迎来到直播间.寻觅一起游戏的好友！希望给一个订阅\n",
       "9388                                欢迎来到小熊的直播间~新人主播关注订阅点一点\n",
       "5831     欢迎来到直播间 点个订阅不迷路\\n进开黑交流群一起玩973870606\\n白菜价pw 160...\n",
       "959                         娱乐主播，订阅有位置可以上车，订阅加游戏id.内涵TV丶丨令\n",
       "4913                 欢迎来到AK的直播间，觉得主播菜的可以关注主播，觉得主播能C的，请举报主播\n",
       "5205                              欢迎来到直播间。有兴趣的可以点上关住，。一起娱乐\n",
       "2655                       欢迎来到听夜声的直播间，每晚11点到天明，我们一起成为守夜人！\n",
       "7098                                  每晚7点指11点准时开播 欢迎各位来捧场\n",
       "4703                                   欢迎来到 一位失去斗志的网友 的直播间\n",
       "10403                                  欢迎来到 金角大王的游戏人生 的直播间\n",
       "62                                每晚7-8点到晚上1-2点开播.主打相位贾克斯.\n",
       "5467                             欢迎来到小月的直播间，新人主播啥游戏都玩，求订阅。\n",
       "9090                      觉得主播可以的关注一下主播，新主播，开黑交流群931129221\n",
       "5764                主播是位大美女，我是主播的助手！\\n两个人打游戏那就不叫打游戏了，那叫约会~\n",
       "5635                欢迎来到小五闪现蛮王的直播间。QQ交流群543594631，有需求的可以加我\n",
       "2816                                    欢迎来到 巨人传媒招收主播 的直播间\n",
       "7853              一切都是命，遇到了是命，遇不到也是命。遇到了擦肩而过是命，遇到了天各一方也是命。\n",
       "Name: 公告, dtype: object"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "——————Topic2——————\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "292      全网最强俄洛伊教学\\nS7三个区的王者保持者\\nS9峡谷宗师保持者，峡谷最高分\\n峡谷之巅英...\n",
       "4037     3w场卡莉丝塔人柱力5赛季网通王者3赛季千分网通第一滑板鞋\\n秒爆技巧最强使用者，教学业务群...\n",
       "2233     峡谷一区双王者，直播时间00.00到7：00 5。粉丝徽章福利10级帮过晋级赛14级牌子包上...\n",
       "2075     直播时间：每天中午12点到下午5点，晚上10点到半夜1点。主玩泽拉斯，冰鸟，细节拉满，长年王者选手\n",
       "276      主播VX：DJX19196800 陪玩包天备注来意 峡谷第一俄洛伊S10峡谷三王者 最高11...\n",
       "6339     千场菜鸭烬！\\n都说人生如场戏，指尖把玩令珍惜。\\n枪落花开谁哭泣，万里狙击无人敌。  （死...\n",
       "10699    新主播求照顾  主播 绝地求生 英雄联盟 云顶之弈\\n直播时间21:00-02:00 感谢相...\n",
       "8151     直播时间每天19-22:00，直播内容：云顶、峡谷（主玩上单），平时多在战争学院。抖音搜索：...\n",
       "4644             四岁时不小心被开水烫伤了喉咙，希望小哥哥们见谅，你们说的话我会用最短时间打字回复。\n",
       "3594        全能王者 每天直播时间晚上12点到早上8点 另外收两个徒弟 两本魔法书包去峡谷资格 先到先得\n",
       "3831        永久车位的家人们记得保牌子哦~牌子没有了永久车位就没有了哦\\n直播时间：中午12点-凌晨12\n",
       "9053                    主玩打野的小萌妹，求关注，每天下午直播，主玩黑色，电一，来一起玩哦。\n",
       "77       浙江温州人。招主播加BTM961  三月直播时间早也播晚也播 皮皮虾：玻璃心少女  抖音：h...\n",
       "5917     直播时间下午1-2点开始，绝食流打野带你领略不一样的野区玩法。我将为嘉文四世证明，这英雄一样...\n",
       "6098     每天在线直播  下午1：00-5：00\\n魔法书＋vx＋30天房管\\n永久房管钞票枪，直奔声...\n",
       "480      峡谷宗师.韩服大师. . 每天8点--早上8点直播 期待与你每天不见不散 需要上号加主播Q5...\n",
       "9697     主播VX；lbxz123m  10级牌子直播打号 14级牌子包钻石 20级牌子包大师 接pw...\n",
       "3898               新人主播，直播时间12点云顶，晚上随机单机，关注微博：Loo宗驰，正常周一休息\n",
       "1821                    湖北小哥哥 .周一至周五直播时间07.00 .其他时间周六周日不规定\n",
       "4636     购买正宗白毫银针（出厂价）或主播打号 V  a617189350\\n想找 王者陪玩+代练也可...\n",
       "Name: 公告, dtype: object"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "——————Topic3——————\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "4627     感谢大家观看星豹的直播，没课的时候直播时间大概是早上十点到晚上8点左右，粉丝群: 61296...\n",
       "9690     蛤蟆本是痴情种，敢为红颜惹恶人，此去瑶池求灵药，愿用蛙命换鹅生，奈何天鹅伤好时，终究还是念旧...\n",
       "3875                  直播时间早10点到不确定！喜欢主播的帮主播点点订阅，谢谢大家的支持~~~\n",
       "240            直播时间晚上七点多点到凌晨四五点。粉丝群570851663，直播不易，谢谢大家多多支持\n",
       "7624     直播时间每天12-17  日常播绝地求生,偶尔LOL 主播游戏直播 关注加订阅QQ粉丝群：1...\n",
       "987      励志成为我的世界最沙雕主播，感谢订阅！粉丝群: 528505922，真爱粉马甲格式：战强出征...\n",
       "4743     直播时间：上午9点到12点和平精英模拟，午饭后神力科莎，之后LOL大乱斗，年纪大了（37）反...\n",
       "10710       每天直播，直播的游戏看心情.会玩绝地求生，使命召唤，穿越火线，逆战，LOL，糖豆人.csgo\n",
       "3045     不靠这份职业谋生，而你刷礼物我却不会阻拦，毕竟都是支持与鼓励！感谢平台！感谢所有的人和事，感...\n",
       "8388               主播网二，水平一般不喜勿喷。直播纯粹为了娱乐快乐。喜欢的话点点订阅关注~笔芯心\n",
       "470      1级牌牌可以进扣扣群哦~群号：1001715302\\n带马甲十二级牌牌报销改名卡  马甲格式...\n",
       "6085     有人疼爱才显得多么出众！真爱粉改下马甲 马甲格式傲娇小宝贝的XX。10级牌牌可报销改名费  ...\n",
       "6289     主播精通各种AD，辅助 打野\\n主播粉丝群：369423053\\n有想配置电脑，加固态内存的...\n",
       "8190                     直播时间为晚上10点到凌晨一点，白天随缘，纯粹娱乐型主播，求订阅！\n",
       "197      我就像一根甘蔗 不会拐弯抹角 容易得罪人 但我还是喜欢这样的自己 不虚伪 不算计 我的脾气赶...\n",
       "63       直播时间晚上7~2点谢谢你们一直喜欢我👉打开\\n微博：九引妹妹\\nQ群：713987610\\...\n",
       "9966        杂食玩家 一般来说晚上8:00开始直播 但有可能白天也会来 觉得菜的点个关注 给你VIP喷位\n",
       "1644     关注达头QQ群:231593921符\\赋及出装对线技巧微博：虎牙直播达头 Y群1489586...\n",
       "392      老弟 不定时直播  也还没有群聊贡大家聊sao 可加老弟wx ：kangfu98 就可知晓老...\n",
       "5687     直播时间睡醒到世界毁灭   新浪微博：晨酱qwq    粉丝群：589455004 直播在群里公告\n",
       "Name: 公告, dtype: object"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "a = pht.sort_values('公告主题概率', ascending=False)\n",
    "for i in range(1, num_topic+1):\n",
    "    print('——————Topic%s——————'%i)\n",
    "    display(a[a.公告主题==str(i)].公告.head(20))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. 这次公告主题不太美丽，区分性不强。考虑要不要加入公告主题。或者用以前的方法试试公告主题。 2. 给直播标题主题命名。3. 绘制词云图并进行分析。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.7",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
